package org.summer.generator;

/**
 * 数据表信息获取常量
 */
public interface TableConstants {
    /**
     * 数据库名字，可能为null
     */
    public static final String TABLE_CAT = "TABLE_CAT";
    /**
     * 表架构，可能为null，或者是数据名字
     */
    public static final String TABLE_SCHEMA = "TABLE_SCHEM";
    /**
     * 数据表名字
     */
    public static final String TABLE_NAME = "TABLE_NAME";
    /**
     * 数据表类型。典型类型包括 “TABLE”、“VIEW”、“SYSTEM TABLE”、“GLOBAL TEMPORARY”、“LOCAL TEMPORARY”、“ALIAS”、“SYNONYM”
     */
    public static final String TABLE_TYPE = "TABLE_TYPE";
    /**
     * 数据表或者字段备注说明信息
     */
    public static final String REMARKS = "REMARKS";
    /**
     * 类型目录，可能为null
     */
    public static final String TYPE_CAT = "TYPE_CAT";
    /**
     * 表类型约束字符串
     */
    public static final String TYPE_SCHEMA = "TYPE_SCHEM";
    /**
     * 类型名称
     */
    public static final String TYPE_NAME = "TYPE_NAME ";
    /**
     * 类型表的指定 “identifier” 列的字符串 => 名称（可以是 null）
      */
    public static final String SELF_REFERENCING_COL_NAME = "SELF_REFERENCING_COL_NAME ";
    /**
     * 指定如何创建 SELF_REFERENCING_COL_NAME 中的值。值为 “SYSTEM”、“USER”、“DERIVED”。（可能是 null)
     */
    public static final String REF_GENERATION = "REF_GENERATION";
    /**
     * 数据表中字段名字
     */
    public static final String COLUMN_NAME = "COLUMN_NAME";
    /**
     *  数据列字段数据类型，数字，java.sql.Types 中的 int => SQL 类型
     */
    public static final String COLUMN_DATA_TYPE = "DATA_TYPE";
    /**
     * 数据列字段数据类型，字符串 => 数据源相关类型名称，对于 UDT，类型名称是完全限定的
     */
    public static final String COLUMN_TYPE_NAME = "TYPE_NAME";
    /**
     * 数据列字段的大小， int值 => 列大小
     */
    public static final String COLUMN_SIZE = "COLUMN_SIZE";
    /**
     * 不使用 BUFFER_LENGTH
     */
    public static final String COLUMN_BUFFER_LENGTH = "BUFFER_LENGTH";
    /**
     * 数据列为DECIMAL时，小数位大小值 int => 小数位数。对于 DECIMAL_DIGITS 不适用的数据类型，将返回 Null
     */
    public static final String COLUMN_DECIMAL_DIGITS = "DECIMAL_DIGITS";
    /**
     * int => 基数（通常为 10 或 2）
     */
    public static final String COLUMN_NUM_PRECISE_RADIX = "NUM_PREC_RADIX";
    /**
     * 数据列字段是否允许为null，int值
     */
    public static final String COLUMN_NULLABLE = "NULLABLE";
    /**
     * 列的字符串 => 默认值，当值括在单引号中时（可能是 null）
     */
    public static final String COLUMN_DEF = "COLUMN_DEF";
    /**
     * int => 未使用
     */
    public static final String COLUMN_SQL_DATA_TYPE = "SQL_DATA_TYPE";
    /**
     * int => 未使用
     */
    public static final String COLUMN_SQL_DATETIME_SUB = "SQL_DATETIME_SUB";
    /**
     * int => 表示 char 类型，表示列中的最大字节数
     */
    public static final String COLUMN_CHAR_OCTET_LENGTH = "CHAR_OCTET_LENGTH";
    /**
     * table 中列的 int => 索引（从 1 开始）
     */
    public static final String COLUMN_ORDINAL_POSITION = "ORDINAL_POSITION";
    /**
     * 字符串 ISO 规则用于确定列的可为 null 性。
     * 如果列可以包含 NULL，则为 YES ---
     * 如果列不能包含 NULL，则为 NO ---
     * 如果列的可为 null 性，则---空字符串
     */
    public static final String COLUMN_IS_NULLABLE = "IS_NULLABLE";
    /**
     * 作为引用属性范围的表的字符串 => 目录（null 如果 DATA_TYPE 不是 REF）
     */
    public static final String COLUMN_SCOPE_CATALOG = "SCOPE_CATALOG";
    /**
     * 作为引用属性范围的表的字符串 => 架构（null 如果DATA_TYPE不是 REF）
     */
    public static final String COLUMN_SCOPE_SCHEMA = "SCOPE_SCHEMA";
    /**
     * 字符串 => 表名称，这是引用属性的范围（null 如果DATA_TYPE不是 REF）
     */
    public static final String COLUMN_SCOPE_TABLE = "SCOPE_TABLE";
    /**
     * distinct 类型的短 => 源类型或用户生成的 Ref 类型，java.sql.Types 中的 SQL 类型（null 如果 DATA_TYPE 不是 DISTINCT 或用户生成的 REF）
     */
    public static final String COLUMN_SOURCE_DATA_TYPE = "SOURCE_DATA_TYPE";
    /**
     * String => 指示此列是否自动递增
     * 如果列自动递增，则为 YES ---
     * 如果列未自动递增，则为 NO ---
     * 空字符串 --- 如果无法确定列是否自动递增
     */
    public static final String COLUMN_IS_AUTOINCREMENT = "IS_AUTOINCREMENT";
    /**
     * String => 指示此列是否为生成列
     * YES --- 如果这是生成的列
     * 如果这不是生成列，则为 NO ---
     * 空字符串 --- 如果无法确定这是否为生成列
     */
    public static final String COLUMN_IS_GENERATED_COLUMN = "IS_GENERATEDCOLUMN";
}
